package com.ktgj.pay.domain;

import com.ktgj.common.core.annotation.Excel;

import java.util.Date;

public class UnionPayQRCodeRequest
{
    /** 消息ID，原样返回 */
    @Excel(name = "消息ID，原样返回")
    private String msgId;

    /** 要退货的金额（退款入参）
     * 全额退款时refundAmount等于支付总金额totalAmount */
    @Excel(name = "要退货的金额")
    private String refundAmount;

    /** 消息来源(来源系统标识) */
    @Excel(name = "消息来源(来源系统标识)")
    private String msgSrc;

    /** 消息类型(bills.getQRCode) */
    @Excel(name = "消息类型(bills.getQRCode)")
    private String msgType;

    /** 报文请求时间，格式yyyy-MM-dd HH:mm:ss */
    @Excel(name = "报文请求时间，格式yyyy-MM-dd HH:mm:ss")
    private String requestTimestamp;

    /** 请求系统预留字段 */
    @Excel(name = "请求系统预留字段")
    private String srcReserve;

    /** 商户号 */
    @Excel(name = "商户号")
    private String mid;

    /** 终端号 */
    @Excel(name = "终端号")
    private String tid;

    /** 业务类型(QRPAYDEFAULT) */
    @Excel(name = "业务类型(QRPAYDEFAULT)")
    private String instMid;

    /** 账单号(重要) */
    @Excel(name = "账单号(重要)")
    private String billNo;

    /** 账单日期，格式yyyy-MM-dd(重要) */
    @Excel(name = "账单日期，格式yyyy-MM-dd(重要)")
    private String billDate;

    /** 账单状态（二维码更新请求入参）
     * PAID：已付
       UNPAID：未付
       REFUND：退款
       CLOSED：关闭 */
    @Excel(name = "账单状态")
    private String billStatus;

    /** 账单描述(不超过128个汉字) */
    @Excel(name = "账单描述(不超过128个汉字)")
    private String billDesc;

    /** 支付总金额(重要) */
    @Excel(name = "支付总金额(重要)")
    private String totalAmount;

    /** 分账标记
     * (默认值为false暂时只支持微信（WXPay.jsPay）、支付宝（trade.jsPay）支付 和 银联云闪付（银联二维码渠道）。
       若为true，则goods字段和subOrders字段不能同时为空；且secureTransaction字段上送false或不上送。) */
    @Excel(name = "分账标记")
    private boolean divisionFlag;

    /** 平台商户分账金额(若分账标记传，则分账金额必传) */
    @Excel(name = "平台商户分账金额(若分账标记传，则分账金额必传)")
    private int platformAmount;

    /** 分账信息(goods与subOrders,二者必传其一) */
    @Excel(name = "(goods与subOrders,二者必传其一)")
    private Goods goods;

    /** 分账信息(goods与subOrders,二者必传其一) */
    @Excel(name = "分账信息(goods与subOrders,二者必传其一)")
    private SubOrders subOrders;

    /** 会员号(支付通知里原样返回) */
    @Excel(name = "会员号(支付通知里原样返回)")
    private String memberId;

    /** 桌号、柜台号、房间号(支付通知里原样返回) */
    @Excel(name = "桌号、柜台号、房间号(支付通知里原样返回)")
    private String counterNo;

    /** 账单过期时间，为空则不过期，格式yyyy-MM-dd HH:mm:ss
     *  一次性二维码的默认过期时间为30分钟，固定码无期限
     *  （获取的二维码若显示在自助机上等类似业务，该字段为必传）
     * */
    @Excel(name = "账单过期时间，为空则不过期，格式yyyy-MM-dd HH:mm:ss")
    private String expireTime;

    /** 支付结果通知地址(接受支付通知的商户服务url) */
    @Excel(name = "支付结果通知地址(接受支付通知的商户服务url)")
    private String notifyUrl;

    /** 网页跳转地址 */
    @Excel(name = "网页跳转地址")
    private String returnUrl;

    /** 二维码ID(针对需要自行生成二维码的情况) */
    @Excel(name = "二维码ID(针对需要自行生成二维码的情况)")
    private String qrCodeId;

    /** 系统ID */
    @Excel(name = "系统ID")
    private String systemId;

    /** 担保交易标识
     *  (取值：true或false，默认false若上送为true，则交易的金额将会被暂缓结算。
        调用担保完成接口后，完成部分金额会在t+1日结算给商户，剩余部分金额退还用户。
        调用担保撤销接口，则全部资金退还给用户。
        30天后 没有主动调用担保完成 且 没有主动调用担保撤销的交易 将会自动按撤销处理。) */
    @Excel(name = "担保交易标识")
    private String secureTransaction;

    /** 钱包选项(说明：1.单一钱包支付传SINGLE, 多钱包支付传MULTIPLE) */
    @Excel(name = "钱包选项(说明：1.单一钱包支付传SINGLE, 多钱包支付传MULTIPLE)")
    private String walletOption;

    /** 签名算法(值为：MD5或 SHA256；若不上送默认为MD5) */
    @Excel(name = "签名算法(值为：MD5或 SHA256；若不上送默认为MD5)")
    private String signType;

    /** 实名认证姓名(Base64编码) */
    @Excel(name = "实名认证姓名(Base64编码)")
    private String name;

    /** 实名认证手机号(Base64编码) */
    @Excel(name = "实名认证手机号(Base64编码)")
    private String mobile;

    /** 实名认证证件类型
     *  (证件类型，微信支持身份证、支付宝支持身份证：IDENTITY_CARD、护照：PASSPORT、军官证：OFFICER_CARD、士兵证：SOLDIER_CARD、户口本：HOKOU) */
    @Excel(name = "实名认证证件类型")
    private String certType;

    /** 实名认证证件号(Base64编码) */
    @Excel(name = "实名认证证件号(Base64编码)")
    private String certNo;

    /** 是否需要实名认证(需要实名认证时置为 T) */
    @Excel(name = "是否需要实名认证(需要实名认证时置为 T)")
    private String fixBuyer;

    /** 是否需要限制信用卡支付(取值：true或false，默认false) */
    @Excel(name = "是否需要限制信用卡支付(取值：true或false，默认false)")
    private String limitCreditCard;

    /** 支付要素查询地址
     * (去商户那里查询支付要素的接口地址，见第9节 固定二维码支付要素查询接口规范。
       提醒：一次性码支付不用上送) */
    @Excel(name = "支付要素查询地址")
    private String payInfoQueryAddr;

    /** 签名 */
    @Excel(name = "签名")
    private String sign;

    public String getMsgId() {
        return msgId;
    }

    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }

    public String getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(String refundAmount) {
        this.refundAmount = refundAmount;
    }

    public String getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(String billStatus) {
        this.billStatus = billStatus;
    }

    public String getMsgSrc() {
        return msgSrc;
    }

    public void setMsgSrc(String msgSrc) {
        this.msgSrc = msgSrc;
    }

    public String getMsgType() {
        return msgType;
    }

    public void setMsgType(String msgType) {
        this.msgType = msgType;
    }

    public String getRequestTimestamp() {
        return requestTimestamp;
    }

    public void setRequestTimestamp(String requestTimestamp) {
        this.requestTimestamp = requestTimestamp;
    }

    public String getSrcReserve() {
        return srcReserve;
    }

    public void setSrcReserve(String srcReserve) {
        this.srcReserve = srcReserve;
    }

    public String getMid() {
        return mid;
    }

    public void setMid(String mid) {
        this.mid = mid;
    }

    public String getTid() {
        return tid;
    }

    public void setTid(String tid) {
        this.tid = tid;
    }

    public String getInstMid() {
        return instMid;
    }

    public void setInstMid(String instMid) {
        this.instMid = instMid;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getBillDate() {
        return billDate;
    }

    public void setBillDate(String billDate) {
        this.billDate = billDate;
    }

    public String getBillDesc() {
        return billDesc;
    }

    public void setBillDesc(String billDesc) {
        this.billDesc = billDesc;
    }

    public String getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(String totalAmount) {
        this.totalAmount = totalAmount;
    }

    public boolean isDivisionFlag() {
        return divisionFlag;
    }

    public void setDivisionFlag(boolean divisionFlag) {
        this.divisionFlag = divisionFlag;
    }

    public int getPlatformAmount() {
        return platformAmount;
    }

    public void setPlatformAmount(int platformAmount) {
        this.platformAmount = platformAmount;
    }

    public Goods getGoods() {
        return goods;
    }

    public void setGoods(Goods goods) {
        this.goods = goods;
    }

    public SubOrders getSubOrders() {
        return subOrders;
    }

    public void setSubOrders(SubOrders subOrders) {
        this.subOrders = subOrders;
    }

    public String getMemberId() {
        return memberId;
    }

    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    public String getCounterNo() {
        return counterNo;
    }

    public void setCounterNo(String counterNo) {
        this.counterNo = counterNo;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }

    public String getQrCodeId() {
        return qrCodeId;
    }

    public void setQrCodeId(String qrCodeId) {
        this.qrCodeId = qrCodeId;
    }

    public String getSystemId() {
        return systemId;
    }

    public void setSystemId(String systemId) {
        this.systemId = systemId;
    }

    public String getSecureTransaction() {
        return secureTransaction;
    }

    public void setSecureTransaction(String secureTransaction) {
        this.secureTransaction = secureTransaction;
    }

    public String getWalletOption() {
        return walletOption;
    }

    public void setWalletOption(String walletOption) {
        this.walletOption = walletOption;
    }

    public String getSignType() {
        return signType;
    }

    public void setSignType(String signType) {
        this.signType = signType;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getCertType() {
        return certType;
    }

    public void setCertType(String certType) {
        this.certType = certType;
    }

    public String getCertNo() {
        return certNo;
    }

    public void setCertNo(String certNo) {
        this.certNo = certNo;
    }

    public String getFixBuyer() {
        return fixBuyer;
    }

    public void setFixBuyer(String fixBuyer) {
        this.fixBuyer = fixBuyer;
    }

    public String getLimitCreditCard() {
        return limitCreditCard;
    }

    public void setLimitCreditCard(String limitCreditCard) {
        this.limitCreditCard = limitCreditCard;
    }

    public String getPayInfoQueryAddr() {
        return payInfoQueryAddr;
    }

    public void setPayInfoQueryAddr(String payInfoQueryAddr) {
        this.payInfoQueryAddr = payInfoQueryAddr;
    }

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }
}
